#include "comm.h"

static void server()
{
    // 1.调用mkfifo创建管道文件
    int ret=mkfifo(FIFOFILEPATH,DEFAULTMODE);
    if(ret<0) // 成功返回0,失败返回-1
    {
        perror("mkfifo");
        exit(1);
    }

    // 2.调用open以读的方式打开管道文件
    int fifo_fd=open(FIFOFILEPATH,O_RDONLY);
    if(fifo_fd<0)
    {
        perror("open");
        exit(2);
    }

    // 3.调用read从管道文件中读取数据
    char buffer[BUFFERSIZE];
    while(true)
    {
        ssize_t n=read(fifo_fd,buffer,sizeof(buffer)-1);
        if(n>0)
        {
            buffer[n]='\0';
            printf("%s\n",buffer);
        } 
        else if(n==0)
        {
            printf("client exit\n");
            break;
        }
        else
        {
            perror("read");
            close(fifo_fd); // 关闭fifo_fd文件描述符
            unlink(FIFOFILEPATH); // 删除管道文件
            exit(4);
        }
    }

    close(fifo_fd);
    unlink(FIFOFILEPATH);
    exit(0);
}

int main()
{
    server();

    return 0;
}

